#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,m,tri[N][2],til[N],dep[N],cnt;
string s;
void add(int now,int k) {
	if(k==s.size()) {
		++til[now];
		return ;
	}
	if(!tri[now][s[k]-'0']) {
		tri[now][s[k]-'0']=++cnt;
		dep[cnt]=dep[now]+1;
	}
	add(tri[now][s[k]-'0'],k+1);
}
int tr[N],ans;
inline int lowbit(int x) { return x&-x ;}
void tr_add(int now,int k) {
	while(now<=m) {
		tr[now]+=k;
		now+=lowbit(now);
	}
}
int tr_vis(int now) {
	int ret=0;
	while(now) {
		ret+=tr[now];
		now-=lowbit(now);
	}
	return ret;
}
int id[N],idd[N],su[N][2],siz[N],depp[N];
void dfs(int now) {
	id[++cnt]=now;
	depp[now]=dep[now];
	if(til[now]) tr_add(cnt,til[now]);
	idd[now]=cnt;
	siz[now]=1;
	if(tri[now][0]) {
		dfs(tri[now][0]);
		siz[now]+=siz[tri[now][0]];
	} else su[now][0]++;
	if(tri[now][1]) {
		dfs(tri[now][1]);
		siz[now]+=siz[tri[now][1]];
	} else su[now][0]++;
}
int tre[N<<2],w[N] ;
inline int ls(int x) { return x<<1 ;}
inline int rs(int x) { return x<<1|1 ;}
void push_up(int now) {
	if(dep[tre[rs(now)]]<dep[tre[ls(now)]]) tre[now]=tre[rs(now)];
	else tre[now]=tre[ls(now)];
}
void build(int now,int l,int r) {
	if(l==r) {
		tre[now]=id[l];
		return ;
	}
	int mid=(l+r)>>1;
	build(ls(now),l,mid);
	build(rs(now),mid+1,r);
	push_up(now);
}
void update(int now,int l,int r,int t,int k) {
	if(l>t||r<t) return ;
	if(l==r) {
		dep[id[l]]+=k;
		return ;
	}
	int mid=(l+r)>>1;
	update(ls(now),l,mid,t,k);
	update(rs(now),mid+1,r,t,k);
	push_up(now);
}
int query(int now,int l,int r,int tl,int tr) {
	if(r<tl||l>tr) return 0;
	if(tl<=l&&r<=tr) return tre[now];
	int mid=(l+r)>>1;
	int t1=query(ls(now),l,mid,tl,tr);
	int t2=query(rs(now),mid+1,r,tl,tr);
	if(dep[t2]<dep[t1]) return t2;
	else return t1;
}
signed main(){
	freopen("id.in","r",stdin);
	freopen("id.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++) {
		cin>>s;
		add(0,0);
	}
	m=cnt;
	cnt=0;
	dfs(0);
	for(int i=1;i<=m;i++) {
		int u=id[i];
		if(su[u][0]==0) {
			dep[u]=1e9 ;
		} else ++dep[u];
	}
	dep[0]=1e9;
	build(1,1,m);
	for(int i=m;i;i--) {
		int u=id[i];
		while(til[u]--) {
			int v=query(1,1,m,i,i+siz[u]-1);
			ans+=dep[v]-depp[u];
			if(su[v][1]==0) update(1,1,m,idd[u],-w[v]);
			--su[v][0];
			++su[v][1];
			++w[v];
			if(su[v][0]==0) {
				swap(su[v][1],su[v][0]);
				update(1,1,m,idd[u],w[v]+1);
			}
		}
	}
	cout<<ans;
	return 0;
}

